/**
 * Copyright (c) 2013-2022 Nikita Koksharov
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *    http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.redisson.codec;

import org.redisson.client.protocol.Decoder;
import org.redisson.client.protocol.Encoder;

/**
 * JsonCodec接口定义了与JSON编码和解码相关的方法。
 * 该接口用于生成和解析JSON格式的数据。
 * @param <T> 泛型参数，表示编码和解码的目标类型。
 */
public interface JsonCodec<T> {

    /**
     * 获取值编码器。
     * 该方法用于获取一个Encoder实例，用于将对象编码为JSON格式。
     * @return Encoder实例，用于对象的JSON编码。
     */
    Encoder getValueEncoder();

    /**
     * 获取值解码器。
     * 该方法用于获取一个Decoder实例，用于将JSON格式的数据解码为Object对象。
     * @return Decoder实例，用于JSON数据的解码。
     */
    Decoder<Object> getValueDecoder();

}

